SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE PROCEDURE [dbo].[SP_TDORDE_FACT_I01]  
/*-------------------------------------------------------*/      
/*---Empresa              : OFISIS S.A.                --*/      
/*---Cliente              : OFISIS                --*/      
/*---Sistema              : Tesoreria                  --*/      
/*---M«dulo               : Empresa                    --*/      
/*---Programa             : Guias Ingreso (O/C-O/S)    --*/      
/*---Script               : SP_TDORDE_FACT_I01_PPTO.sql--*/      
/*---Nombre SP            : SP_TDORDE_FACT_I01_PPTO    --*/      
/*---Desarrollado por     : Javier Flores A.           --*/      
/*---Fecha Creaci«n       : 07/03/2000                 --*/      
/*---Base Datos           : Microsoft Sql Server       --*/      
/*---Versi«n              : 7.0                        --*/      
/*---Invoca a SP          :                            --*/      
/*-------------------------------------------------------*/      
/*-------------------------------------------------------*/      
/*---Modificado 1 por     : Javier Flores A.        --*/      
/*---Fecha Modificaci«n   : 28/10/2003   --*/       
/*---Detalle Modificaci«n : Habilitacion   --*/      
/*-------------------------------------------------------*/      
/*-------------------------------------------------------*/    
/*---Modificado 2 por     : Maribel Julca Rodriguez    --*/    
/*---Fecha Modificaci©n   : 21/04/2005                 --*/     
/*---Detalle Modificaci©n : ingreso de los campos CO_USUA_CREA, CO_USUA_MODI  --*/    
/*-------------------------------------------------------*/    
/*-------------------------------------------------------*/    
/*---Modificado 3 por     : Carlos Marquez Escobar   --*/    
/*---Fecha Modificaci©n   : 16/09/2005                 --*/     
/*---Detalle Modificaci©n : O/C serv atend. en base a Totales  --*/    
/*-------------------------------------------------------*/    
/*-------------------------------------------------------*/    
/*---Modificado 4 por     : Carlos Marquez Escobar      --*/    
/*---Fecha Modificaci«n   : 28/09/2005                 --*/     
/*---Detalle Modificaci«n : Modificacion de Costos a Mov de OC Nacionales --*/    
/*-------------------------------------------------------*/  
/*-------------------------------------------------------*/    
/*---Modificado 5 por     : Carlos Marquez Escobar      --*/    
/*---Fecha Modificaci«n   : 10/11/2005                 --*/     
/*---Detalle Modificaci«n : No considerar movs Anulados --*/    
/*-------------------------------------------------------*/      
/*---Comentarios  STANDAR                              --*/      
/*---                                                  --*/      
/*---                                                  --*/      
/*-------------------------------------------------------*/      
/*-------------------------------------------------------*/      
/* DROP PROC SP_TDORDE_FACT_I01     */      
/* GRANT ALL ON SP_TDORDE_FACT_I01 TO PUBLIC     */      
/* SP_TDORDE_FACT_I01                                    */      
/*-------------------------------------------------------*/      
@ISCO_EMPR       TD_VC_003,      
@ISCO_USUA_MODI  TD_VC_008,      
@ISCO_PROV       TD_VC_020,      
@ISCO_TIPO_DOCU  TD_VC_003,      
@ISNU_DOCU_PROV  TD_VC_020,      
@ISTI_DOCU_ORIG  TD_VC_003,      
@ISNU_DOCU_ORIG  TD_VC_020,      
@ISCO_MONE       TD_VC_003,      
@ISTI_DOCU_GUIN  TD_VC_003,      
@ISNU_DOCU_GUIN  TD_VC_020,      
@INIM_DOCU_ORIG  TD_NU_016_004,      
@INIM_CONV       TD_NU_016_004,      
@INNU_CORR       TD_IN_001,      
@ISCO_UNID       TD_VC_003,      
@ISCO_ALMA       TD_VC_003,      
@INFA_TIPO_CAMB  TD_NU_016_004  
 As  
BEGIN      
      
Declare      
  @VSST_PRES    TD_VC_001,       
  @VSTI_CAMB    TD_VC_001,       
  @VSTI_ORIG    TD_VC_001,       
  @VSCO_MONE_NACI  TD_VC_003,       
  @VSCO_MONE_EXTR  TD_VC_003,       
  @VSCO_MONE_CPRO  TD_VC_003,       
  @VSCO_MONE_CPRA  TD_VC_003,       
  @VSCO_TIAU_PROV  TD_VC_001,      
  @VNIM_COMP_ORCO  TD_NU_016_004,       
  @VNNU_CORR       TD_IN_001  
  
  
  
  
Begin Tran SP_TDORDE_FACT_I01  
      
   
 Select @VSTI_CAMB = TI_CAMB, @VSTI_ORIG = TI_ORIG        
 From TTFACA_OPCI        
 Where CO_EMPR = @ISCO_EMPR        
 And CO_MODU = 'TEEM0001'        
 And CO_MENU = 'FTEEMBA'        
  
 select @VSCO_MONE_CPRO =  CO_MONE_CPRO,  
   @VSCO_MONE_CPRA =  CO_MONE_CPRA  
 From  TMPARA_LOGI  
 Where  CO_EMPR = @ISCO_EMPR    
  
   
 If ( @VSTI_CAMB Is Null Or @VSTI_ORIG Is Null )        
  Select  @VSTI_CAMB = TI_CAMB,       
  @VSTI_ORIG = TI_ORIG,       
  @VSCO_MONE_NACI = CO_MONE_DEFA,       
  @VSCO_MONE_EXTR = CO_MONE_EXTR,      
  @VSCO_TIAU_PROV = CO_TIAU_PROV,  
  @VSST_PRES = ST_PRES      
  From    TMPARA_TESO      
  Where   CO_EMPR = @ISCO_EMPR       
 Else        
  Select  @VSCO_MONE_NACI = CO_MONE_DEFA,       
  @VSCO_MONE_EXTR = CO_MONE_EXTR,      
  @VSCO_TIAU_PROV = CO_TIAU_PROV,  
  @VSST_PRES = ST_PRES      
  From    TMPARA_TESO      
  Where   CO_EMPR = @ISCO_EMPR       
   
   
   
 If @INNU_CORR IS NULL      
 Begin      
  Select @VNNU_CORR = NU_CORR      
  From   TDORDE_FACT      
  Where  CO_EMPR = @ISCO_EMPR      
  And    CO_PROV = @ISCO_PROV       
  And    CO_TIPO_DOCU = @ISCO_TIPO_DOCU      
  AnD    NU_DOCU_PROV = @ISNU_DOCU_PROV      
   
  If @VNNU_CORR > 0      
  Select @VNNU_CORR = @VNNU_CORR + 1      
  Else      
  Select @VNNU_CORR = 1         
   
  If @ISTI_DOCU_GUIN is not Null AND @ISTI_DOCU_GUIN != ''      
  Begin      
   Insert into TDORDE_FACT (CO_EMPR, CO_PROV, CO_TIPO_DOCU, NU_DOCU_PROV,      
   NU_CORR, TI_DOCU_ORIG, NU_DOCU_ORIG, TI_DOCU_GUIN, NU_DOCU_GUIN, CO_MONE,      
   IM_DOCU_ORIG,IM_CONV, CO_ALMA, CO_UNID, CO_USUA_CREA,FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI )      
   Values (@ISCO_EMPR, @ISCO_PROV, @ISCO_TIPO_DOCU, @ISNU_DOCU_PROV,      
   @VNNU_CORR, @ISTI_DOCU_ORIG, @ISNU_DOCU_ORIG, @ISTI_DOCU_GUIN, @ISNU_DOCU_GUIN,       
   @ISCO_MONE, @INIM_DOCU_ORIG, @INIM_CONV, @ISCO_ALMA, @ISCO_UNID, @ISCO_USUA_MODI,GETDATE(), @ISCO_USUA_MODI, GETDATE())      
   If @@error <> 0      
   Begin      
    Rollback tran SP_TDORDE_FACT_I01  
    Return      
   End          
   
   Update  TCDOCU_ALMA       
   Set  ST_TESO = 'S',       
    CO_USUA_MODI = @ISCO_USUA_MODI,       
    FE_USUA_MODI = Getdate()      
   Where   NU_DOCU = @ISNU_DOCU_GUIN      
   And     TI_DOCU = @ISTI_DOCU_GUIN      
   And     CO_ALMA = @ISCO_ALMA      
   And     CO_UNID = @ISCO_UNID      
   And     CO_EMPR = @ISCO_EMPR      
   And     NU_ORCO = @ISNU_DOCU_ORIG       
   If @@error <> 0      
   Begin      
    Rollback tran SP_TDORDE_FACT_I01  
    Return      
   End          
   
   Update  TDDOCU_ALMA      
   Set  FA_CAMB = @INFA_TIPO_CAMB      
   Where   CO_EMPR = @ISCO_EMPR      
   And     TI_DOCU = @ISTI_DOCU_GUIN      
   And     NU_DOCU = @ISNU_DOCU_GUIN      
   And     NU_ORCO = @ISNU_DOCU_ORIG       
   If @@error <> 0      
   Begin      
    Rollback tran SP_TDORDE_FACT_I01  
    Return      
   End          
   
  
   -- Modificacion de Costos a Mov de OC Nacionales, Importaciones se encargara de Actualizarlo pro sus Opciones  
   Update  TDDOCU_ALMA  
            Set     IM_COST_ALMA = Ofilogi.dbo.FU_TIPO_CAMB_Q03(CO_MONE,@VSCO_MONE_CPRO,@INFA_TIPO_CAMB,0,IM_COST_COMP)/ (CA_DOCU_ALMA/CA_DOCU_MOVI),  
     IM_COTO_ALMA = (Ofilogi.dbo.FU_TIPO_CAMB_Q03(CO_MONE,@VSCO_MONE_CPRO,@INFA_TIPO_CAMB,0,IM_COST_COMP)/ (CA_DOCU_ALMA/CA_DOCU_MOVI))* CA_DOCU_ALMA,  
     IM_COST_ALAJ = Ofilogi.dbo.FU_TIPO_CAMB_Q03(CO_MONE,@VSCO_MONE_CPRO,@INFA_TIPO_CAMB,0,IM_COST_COMP)/ (CA_DOCU_ALMA/CA_DOCU_MOVI),  
     IM_COTO_ALAJ = (Ofilogi.dbo.FU_TIPO_CAMB_Q03(CO_MONE,@VSCO_MONE_CPRO,@INFA_TIPO_CAMB,0,IM_COST_COMP)/ (CA_DOCU_ALMA/CA_DOCU_MOVI))* CA_DOCU_ALMA,  
  
     IM_COST_ALAL = Ofilogi.dbo.FU_TIPO_CAMB_Q03(CO_MONE,@VSCO_MONE_CPRA,@INFA_TIPO_CAMB,0,IM_COST_COMP)/(CA_DOCU_ALMA/CA_DOCU_MOVI),  
     IM_COTO_ALAL = (Ofilogi.dbo.FU_TIPO_CAMB_Q03(CO_MONE,@VSCO_MONE_CPRA,@INFA_TIPO_CAMB,0,IM_COST_COMP)/(CA_DOCU_ALMA/CA_DOCU_MOVI))* CA_DOCU_ALMA,  
     IM_COST_ALAA = Ofilogi.dbo.FU_TIPO_CAMB_Q03(CO_MONE,@VSCO_MONE_CPRA,@INFA_TIPO_CAMB,0,IM_COST_COMP)/(CA_DOCU_ALMA/CA_DOCU_MOVI),  
     IM_COTO_ALAA = (Ofilogi.dbo.FU_TIPO_CAMB_Q03(CO_MONE,@VSCO_MONE_CPRA,@INFA_TIPO_CAMB,0,IM_COST_COMP)/(CA_DOCU_ALMA/CA_DOCU_MOVI))* CA_DOCU_ALMA  
   Where   CO_EMPR = @ISCO_EMPR    
   And     TI_DOCU = @ISTI_DOCU_GUIN    
   And     NU_DOCU = @ISNU_DOCU_GUIN    
   And     NU_ORCO = @ISNU_DOCU_ORIG     
   and  NU_IMPT IS NULL  
   And     TI_SITU = 'ACT'  
  
  
     
   If @@error <> 0    
   Begin    
    Rollback tran  SP_TDORDE_FACT_I01  
    Return    
   End        
  
   
   Update  TMDOCU_PROV       
   Set  ST_ORIG_COSE = 'C',       
    CO_USUA_MODI = @ISCO_USUA_MODI,       
    FE_USUA_MODI = GETDATE()   
   Where   CO_EMPR = @ISCO_EMPR      
   And     CO_PROV = @ISCO_PROV       
   And     CO_TIPO_DOCU = @ISCO_TIPO_DOCU      
   And     NU_DOCU_PROV = @ISNU_DOCU_PROV      
     
   If @@error <> 0      
   Begin      
    Rollback tran SP_TDORDE_FACT_I01  
    Return      
   End          
  End      
  Else      
  Begin      
   Insert into TDORDE_FACT (CO_EMPR, CO_PROV, CO_TIPO_DOCU, NU_DOCU_PROV,      
   NU_CORR, TI_DOCU_ORIG, NU_DOCU_ORIG, CO_MONE,  IM_DOCU_ORIG,IM_CONV, CO_USUA_CREA,FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI, CO_ALMA, CO_UNID )      
   Values (@ISCO_EMPR, @ISCO_PROV, @ISCO_TIPO_DOCU, @ISNU_DOCU_PROV,      
   @VNNU_CORR, @ISTI_DOCU_ORIG, @ISNU_DOCU_ORIG, @ISCO_MONE, @INIM_DOCU_ORIG, @INIM_CONV, @ISCO_USUA_MODI,GETDATE(), @ISCO_USUA_MODI, GETDATE(),      
   @ISCO_ALMA, @ISCO_UNID )      
   If @@error <> 0      
   Begin      
    Rollback tran SP_TDORDE_FACT_I01  
    Return      
   End       
   
   Update  TMDOCU_PROV       
   Set  ST_ORIG_COSE = 'S',       
    CO_USUA_MODI = @ISCO_USUA_MODI,       
    FE_USUA_MODI = GETDATE()      
   Where   CO_EMPR = @ISCO_EMPR      
   And     CO_PROV = @ISCO_PROV       
   And     CO_TIPO_DOCU = @ISCO_TIPO_DOCU      
   And     NU_DOCU_PROV = @ISNU_DOCU_PROV         
   If @@error <> 0      
   Begin      
    Rollback tran SP_TDORDE_FACT_I01  
    Return      
   End          
   
   
   Select @VNIM_COMP_ORCO = Sum(dbo.FN_TCFACT_CAMB_Q02(T1.CO_MONE, t2.CO_MONE, T1.FE_EMIS,  
           t2.IM_CONV,  
           @VSTI_CAMB, @VSTI_ORIG, 'S', @VSCO_MONE_NACI, @VSCO_MONE_EXTR, t1.FA_TIPO_CAMB))   
   From TMDOCU_PROV T1, TDORDE_FACT T2  
   Where   
   T1.CO_EMPR = @ISCO_EMPR and  
     
   T1.CO_EMPR = T2.CO_EMPR And  
   T1.CO_PROV = T2.CO_PROV And  
   T1.CO_TIPO_DOCU = T2.CO_TIPO_DOCU And  
   T1.NU_DOCU_PROV = T2.NU_DOCU_PROV And  
   T1.CO_ESTA_DOCU != 'ANU' And  
   t2.TI_DOCU_GUIN is Null And  
   t2.NU_DOCU_GUIN is Null And      
   T2.NU_DOCU_ORIG = @ISNU_DOCU_ORIG  
   
   Update  TCORDE_COMP        
   Set  ST_TESO = Case When Round(IM_BRUT_AFEC + IM_BRUT_INAF - (IM_DCT1 + IM_DCT2),2) - Round(IsNull(@VNIM_COMP_ORCO, 0),2) > 0.00  
       Then 'N' Else 'S'   
       End,       
       CO_USUA_MODI = @ISCO_USUA_MODI,       
       FE_USUA_MODI = GETDATE()   
   Where  NU_ORCO = @ISNU_DOCU_ORIG      
   And    CO_EMPR = @ISCO_EMPR      
   If @@error <> 0      
   Begin      
    Rollback tran SP_TDORDE_FACT_I01  
    Return      
   End          
   
  End      
 End      
   
 --------------- CONTROL PRESUPUESTAL (INICIO) ---------------      
 If @VSST_PRES = 'S'      
 Begin  
  --Se ejecuta el SP para determinar si existe presupuesto para la partida      
  Exec SP_TDMVTO_PART_I01 @ISCO_EMPR, @ISCO_USUA_MODI, @ISCO_PROV, @ISCO_TIPO_DOCU, @ISNU_DOCU_PROV, @ISTI_DOCU_ORIG, @ISNU_DOCU_ORIG, @ISCO_MONE,  
   @ISTI_DOCU_GUIN, @ISNU_DOCU_GUIN, @INIM_DOCU_ORIG, @INIM_CONV, @INNU_CORR, @ISCO_UNID, @ISCO_ALMA, @INFA_TIPO_CAMB  
       
    
  If @@error <> 0      
  Begin      
   Close CU_TDORDE_FACT_I01_1      
   Deallocate CU_TDORDE_FACT_I01_1      
   Rollback tran SP_TDORDE_FACT_I01  
   Return      
  End      
  
 End  
 --------------- CONTROL PRESUPUESTAL (FIN) ---------------      
   
 Commit Tran SP_TDORDE_FACT_I01  
END      
/*-------------------------- Fin ------------------------------*/


GO
